package com.sisgesbyte.web.managedBean.paginaweb;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import com.sisgesbyte.common.ConstantesInternasSistema;
import com.sisgesbyte.dao.beanDao.FiltrosBean;
import com.sisgesbyte.dao.beanDao.FiltrosSQLBean;
import com.sisgesbyte.services.administracion.MantenimientoAreaEmpresa;
import com.sisgesbyte.services.administracion.MantenimientoAtencionCliente;
import com.sisgesbyte.services.administracion.MantenimientoTemasAtencion;
import com.sisgesbyte.services.administracion.bean.AreaEmpresaBean;
import com.sisgesbyte.services.administracion.bean.AreasEmpresaListaResponse;
import com.sisgesbyte.services.administracion.bean.AtencionClienteBean;
import com.sisgesbyte.services.administracion.bean.TemaAtencionBean;
import com.sisgesbyte.services.administracion.bean.TemaAtencionListaResponse;
import com.sisgesbyte.services.commonBean.GenericGuardarResponse;

@ManagedBean
@ViewScoped
public class ContactanosMBean implements Serializable{

	private static final long serialVersionUID = 1L;
	
	@EJB
	private MantenimientoAtencionCliente mantenimientoAtencionCliente;
	@EJB
	private MantenimientoAreaEmpresa mantenimientoAreaEmpresa;
	@EJB
	private MantenimientoTemasAtencion mantenimientoTemasAtencion;
	private AtencionClienteBean atencionBean;
	private List<AreaEmpresaBean> listaAreasEmpresa;
	private List<TemaAtencionBean> listaTemasAtencion;
	private String codigoRegistro;
	
	@PostConstruct
	private void init() {
		codigoRegistro="";
		cargarAreas();
		inicializar();
	}
	
	public AtencionClienteBean getAtencionBean() {
		return atencionBean;
	}

	public void setAtencionBean(AtencionClienteBean atencionBean) {
		this.atencionBean = atencionBean;
	}

	public List<AreaEmpresaBean> getListaAreasEmpresa() {
		return listaAreasEmpresa;
	}

	public void setListaAreasEmpresa(List<AreaEmpresaBean> listaAreasEmpresa) {
		this.listaAreasEmpresa = listaAreasEmpresa;
	}

	public List<TemaAtencionBean> getListaTemasAtencion() {
		return listaTemasAtencion;
	}

	public void setListaTemasAtencion(List<TemaAtencionBean> listaTemasAtencion) {
		this.listaTemasAtencion = listaTemasAtencion;
	}

	public String getCodigoRegistro() {
		return codigoRegistro;
	}

	public void setCodigoRegistro(String codigoRegistro) {
		this.codigoRegistro = codigoRegistro;
	}

	public void cargarAreas(){
		try {
			FiltrosSQLBean filtroSQL = new FiltrosSQLBean();
			filtroSQL.setCampoOrden("id");
			filtroSQL.setTipoOrden("desc");
			AreasEmpresaListaResponse response = mantenimientoAreaEmpresa.listarAreasEmpresa(obtenerIdTransaccion(), filtroSQL);
			if (Integer.valueOf(response.getCodigoRespuesta()) > -1) {
				listaAreasEmpresa= response.getListaAreasEmpresa();
			} else {
				System.out.println("No se encontro Data "+ response.getMensajeRespuesta());
			}
			System.out.println("Total Areas: "+response.getListaAreasEmpresa().size());
		} catch (Exception e) {
			System.out.println("Ocurrio un error al cargar Lista " + e);
		}
	}
	
	public void cargarTemas(){
		try {
			FiltrosSQLBean filtroSQL = new FiltrosSQLBean();
			List<FiltrosBean> listaCampos = new ArrayList<FiltrosBean>();
			List<Object> valores = new ArrayList<>();
			FiltrosBean filtros = new FiltrosBean();
			List<String> campos = new ArrayList<String>();
			campos.add("ta.area_empresa_id");
			filtros.setCampos(campos);
			listaCampos.add(filtros);
			filtros.setOperador("=");
			valores.add(getAtencionBean().getAreaEmpresaId());
			filtroSQL.setListaFiltros(listaCampos);
			filtroSQL.setListaValores(valores);
			filtroSQL.setCampoOrden("ta.descripcion");
			filtroSQL.setTipoOrden("asc");
			TemaAtencionListaResponse response =mantenimientoTemasAtencion.listaTemasAtencion(obtenerIdTransaccion(), filtroSQL);
			if (Integer.valueOf(response.getCodigoRespuesta()) > -1) {
				
				listaTemasAtencion= response.getListaTemasAtencion();
			} else {
				System.out.println("No se encontro Data "+ response.getMensajeRespuesta());
			}
			System.out.println("Total Temas: "+response.getListaTemasAtencion().size());
		} catch (Exception e) {
			System.out.println("Ocurrio un error al mostrar los temas " + e);
		}
	}
	
	public void registrarAtencion() {
		try {
			GenericGuardarResponse registrar =mantenimientoAtencionCliente.nuevaAtencionCliente(obtenerIdTransaccion(), getAtencionBean());
			if(registrar.getCodigoRespuesta().equals(ConstantesInternasSistema.CODIGO_EXITO)){
				setCodigoRegistro(registrar.getCodigoSaved());
				System.out.println("Codigo: "+registrar.getCodigoSaved());
				
			}
		} catch (Exception e) {
			System.out.println("Ocurrio un error al registrar el Ticket " + e);
		}
		inicializar();
	}
	public void inicializar(){
		AtencionClienteBean nuevo = new AtencionClienteBean();
		nuevo.setEstadoId(1);
		nuevo.setActive(true);
		setAtencionBean(nuevo);
	}
	public String obtenerIdTransaccion(){
		
		return "123456";
	}

}
